package com.cqndt.disaster.device.dao;

import java.util.Map;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import com.cqndt.disaster.device.vo.TabDeviceVo;
import com.cqndt.disaster.device.domain.TabDevice;
import com.cqndt.disaster.device.vo.DeviceMonitorVo;
import com.cqndt.disaster.device.vo.MonitorScaleVo;
import com.cqndt.disaster.device.vo.DeviceInProjectVo;
import com.cqndt.disaster.device.domain.TabDeviceType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

@Mapper
public interface TabDeviceMapper extends BaseMapper<TabDevice>{
   
    List<TabDeviceVo> listTabDevice(TabDeviceVo tabDeviceVo);

    /**
     * @param id 设备id
     * @param offTime 离线时间
     * @return 获取当前设备在离线信息
     **/
    TabDeviceVo getTabDevice(@Param("id")Integer id,@Param("reciverTime")String recTime);
    /**
     * @param userId
     * @return 设备统计
     **/
    Integer countDeviceNum(Integer userId);
    /**
     * @param userId
     * @return 查询累计告警
     **/
    List<Map<String,Object>> countDeviceAlarmNum(@Param("userId")Integer userId);
    /**
     * @param userId
     * @param deviceType
     * @return 该用户设备在线数量
     **/
    Integer countDeviceStateZx(@Param("userId")Integer userId,@Param("deviceType")String deviceType,@Param("offlineTime")Integer offlineTime);
    /**
     * @param userId
     * @param deviceType
     * @return 该用户设备离线数量
     **/
    Integer countDeviceStateLx(@Param("userId")Integer userId,@Param("deviceType")String deviceType,@Param("offlineTime")Integer offlineTime);

    /**
     * @param userId
     * @return 获取该用户所有设备类型
     **/
    List<Map<String,Object>> selectAllType(Integer userId);
    /**
     * @param userId
     * @param offlineTime
     * @return 查询设备在线状态(正常、1日、2日、3日、4日及以上无数据)
     **/
    Map<String,Object> countInstrumentNum(@Param("userId")Integer userId,@Param("offlineTime")Integer offlineTime);
    /**
     * @param userId
     * @return 监测方法统计
     **/
    List<Map<String,Object>> countMonitorTypeNum(Integer userId);
    /**
     * @param deviceNo 设备编号
     * @return 获取当前设备
     **/
    TabDevice getDevice(@Param("deviceNo") String deviceNo);
    
    List<TabDeviceType> getDeviceType(@Param("monitorNo") String monitorNo);
    
    /**
     * @param projectId
     * @return 获取项目不同类型的设备
     **/
    List<DeviceInProjectVo> selectByProjectId(String projectId);
    /**
     * @param projectId
     * @param deviceType
     * @return 获取同一项目下同一类型的设备
     **/
    List<DeviceMonitorVo> selectByPIdAndDtype(@Param("projectId")String projectId, @Param("deviceType")Integer deviceType);

    
    List<MonitorScaleVo> selectMointorScaleVoList(@Param("projectId")String projectId, @Param("deviceType")Integer deviceType);
}